/*
 * File				: ClassPathHacker.java
 * Created			: Aug 23, 2007
 * License			: Copyright (c) 2006 - RanLogic
 * Original Author 	: Leandro Casadei
 * Modified by		: $LastChangedBy: jianying.qijy $
 * Last Modication  : $LastChangedDate: 2011-04-01 15:26:43 +0800 (Fri, 01 Apr 2011) $
 * Revision			: $LastChangedRevision: 97075 $
 * 
 * 
 * 
 */

package org.apache.jmeter;

import java.lang.reflect.*;
import java.io.*;
import java.net.*;

public class ClassPathHacker {
	 
	private static final Class[] parameters = new Class[]{URL.class};
	 
	public static void addFile(String s) throws IOException {
		File f = new File(s);
		addFile(f);
	}
	 
	public static void addFile(File f) throws IOException {
		addURL(f.toURI().toURL());
	}
	 
	public static void addURL(URL u) throws IOException {
		URLClassLoader sysloader = (URLClassLoader) Thread.currentThread().getContextClassLoader();
		Class<URLClassLoader> sysclass = URLClassLoader.class;
	 
		try {
			Method method = sysclass.getDeclaredMethod("addURL",parameters);
			method.setAccessible(true);
			method.invoke(sysloader,new Object[]{ u });
		} catch (Throwable t) {
			t.printStackTrace();
			throw new IOException("Error, could not add URL to system classloader");
		}
			
	}
	 
}
